<?
class RegisterForm extends Form{
	private $show_form=true;
	function RegisterForm(){
		Form::Form('Register');
		$this->link_js('javascript/ajax.js');
		$this->link_js('javascript/jquery/packed/jquery.validate.js');	
		$this->link_js('javascript/enbac/register.js');	
		
		//check secrurity
		if(!$_SERVER["HTTP_ACCEPT_ENCODING"] && !$_SERVER["HTTP_ACCEPT_LANGUAGE"]) 
			Url::redirect('home');
		/*if(strpos(CGlobal::$referer_url,WEB_ROOT)!==0){
			$_SESSION['just_registed']=TIME_NOW-120;
			AZLib::my_setcookie('just_registed',TIME_NOW-120);
			Url::access_denied();
		}*/
		//END check secrurity
	}
	
	function on_submit(){
		if(User::checkLock4Ever(1)){
			Url::redirect_current();
		}
		
		//check bảo mật
		$just_registed_s=0;
		$just_registed_c=0;
		if(isset($_SESSION['just_registed'])){
			$just_registed_s=$_SESSION['just_registed'];
		}
		
		if(isset($_COOKIE['just_registed'])){
			$just_registed_c=$_COOKIE['just_registed'];
		}
		
		if($just_registed_s>(TIME_NOW-120)||$just_registed_c>(TIME_NOW-120) || !REG_ON){		
			Url::redirect_current();
		}
		//END check bảo mật
		
		
		// check de ban IP
		$ip = AZLib::ip();
		$arr_badwords = AZLib::checkBadWord($ip,true);		
		if($arr_badwords["bad"]!="" && $arr_badwords["bad_key"]!=""){
			$this->setFormError('ban_ip',"Có lỗi xẩy ra");
		}
		// end check de ban IP
		
		
		$full_name 			= Url::get('full_name');
		$email 				= Url::get('email');
		$user_name 			= Url::get('register_user_name');
		$mobile_phone 		= AZLib::trimSpace(Url::get('mobile_phone'));
		
		$password 			= AZLib::trimSpace(Url::get('register_password'));
		$confirm_password 	= AZLib::trimSpace(Url::get('confirm_password'));
		
		$this->checkFormInput('Tên đầy đủ','full_name',$full_name,'str',false,'',0,50);	
		$this->checkFormInput('Email','email',$email,'email',true,'',6,50);	
		$this->checkFormInput('Tên truy cập','user_name',$user_name,'uname',true,'',4,50);	
		$this->checkFormInput('Điện thoại di động','mobile_phone',$mobile_phone,'str',false,'',0,50);	
		
		$this->checkFormInput('Mật khẩu truy cập','register_password',$password,'str',true,'',6,50);	
		$this->checkFormInput('Nhập lại mật khẩu','confirm_password',$confirm_password,'str',true,'',6,50);	
		if(!$this->errNum){
			if($password!=$confirm_password){
				$this->setFormError('captcha_register',"Nhập lại Mật khẩu truy cập không khớp!");
				return;
			}	
		}
		
		$captcha_register = Url::get('captcha_register');
		
		if($mobile_phone && !AZLib::is_mobile($mobile_phone)){
			$mobile_phone = "";
		}
		
		if($captcha_register==''){
			$this->setFormError('captcha_register',"Bạn chưa nhập <b>Mã bảo mật</b>!");
		}
		else{
			if(!isset($_SESSION["enbac_validate"]) || $captcha_register != $_SESSION["enbac_validate"]){
				$this->setFormError('captcha_register',"<b>Mã bảo mật</b> không chính xác!");
			}
		}
		
		if((int)Url::get('confirm_register')!=1){
			$this->setFormError('confirm_register',"Bạn phải đọc và đồng ý với những <a target=\"_blank\" href=\"http://help.enbac.com/content/4/5/en/Quy-che-thanh-vien.html\" >điều khoản của Enbac.com</a>!");
		}
		
		if(!$this->errNum){
					
		
			if(DB::exists('SELECT id FROM `user` WHERE `email`="'.$email.'"')){
				$this->setFormError('email',"<b>Email</b> bạn chọn đã tồn tại, hãy chọn lại một <b>Email</b> khác!");
			}
			elseif(DB::exists('SELECT id FROM `user` WHERE `user_name`="'.$user_name.'"')){
				$this->setFormError('email',"<b>Tên truy cập</b> bạn chọn đã tồn tại, hãy chọn lại một <b>Tên truy cập</b> khác!");
			}
			else{	
				$user_info = array(	
											'user_name'		=>$user_name,
											'email'			=>$email,
											'password'		=>User::encode_password($password),
											'full_name'		=>$full_name,
											'mobile_phone'	=>$mobile_phone,
											'create_time'	=>TIME_NOW,
											'is_active'		=>(int)(bool)USER_ACTIVE_ON,
											'reg_ip'		=>AZLib::ip());
				$id= DB::insert('user', $user_info);
				
				if($id){
					$_SESSION['just_registed']=TIME_NOW;
					AZLib::my_setcookie('just_registed',TIME_NOW);
					if(USER_ACTIVE_ON && $user_info['is_active']==1){
						global $display;
						$active=DB::select('user_active','user_id='.$id);
						$active_code		= md5(TIME_NOW.$user_info['password']);
						if($active){
							$active=array(
											'id'		 =>$active['id'],
											'user_id'	 =>$id,
											'active_code'=>$active_code,
											'time'		 =>TIME_NOW,
											);
						}
						else{
							$active=array(
											'user_id'	 =>$id,
											'active_code'=>$active_code,
											'time'		 =>TIME_NOW,
											);
						}
						DB::insert('user_active',$active,true);
						
						$display->add('eb_url',WEB_ROOT);
						$display->add('user_id',$id);
						$display->add('user_name',$user_info['user_name']);
						$display->add('active_code',$active_code);
						
						$display->add('WEB_NAME',WEB_NAME);
						$display->add('MAIL_FOOTER',MAIL_FOOTER);
						
						$content_email=$display->output('send_active_mail',1,'RegisterSuccess');
						//Send email here;
						if(System::sendEBEmail($user_info['email'],'Kích hoạt tài khoản!',$content_email)){
							//$this->setFormSucces('','<b>Chúc mừng bạn đã đăng ký tài khoản thành công!</b><br /><br />Mã kích hoạt đã được gửi đi tới E-mail: "'.$user_info['email'].'"<br />Bạn hãy check lại Email để kích hoạt tài khoản của mình!');
							Url::redirect('reg_success',array('cmd'=>'notify'));
						}
						else{
							$this->setFormError('','<b>Chúc mừng bạn đã đăng ký tài khoản thành công!</b><br /><br />Tuy nhiên hệ thống chưa gửi được Mã kích hoạt tới E-mail: "'.$user_info['email'].'"!<br />Bạn có thể <a href="'.Url::build('reg_success',array('cmd'=>'active')).'">click vào đây</a> để hệ thống gửi lại mã kích hoạt vào Email của mình!');
						}
						$this->show_form=false;
					}
					else{
						User::Login($id);
						Url::redirect('reg_success');
					}
				}
				else {
					$this->setFormError('',"Chưa đăng ký được, mời bạn thử lại!");
				}
			}
		}
	}
	
	function draw(){
		global $display;	
		$this->beginForm();
		
		$display->add('msg_register',$this->showFormErrorMessages(1));			
		$display->add('msg_success',$this->showFormSuccesMessages(1));		
		$display->add('show_form',$this->show_form);		
				
		if(AZLib::getParam('page')=='sign_in' && AZLib::getParam('cmd')=='register'){
			$is_register = 1;
		}
		else{
			$is_register = "";
		}
		
		$display->add('is_register',$is_register);
		
		$display->add('error_full_name',	Url::get('full_name'));
		$display->add('error_email',		Url::get('email'));
		$display->add('error_user_name',	Url::get('register_user_name'));
		$display->add('error_mobile_phone',	Url::get('mobile_phone'));
		$display->add('register_password',	Url::get('register_password'));
		$display->add('confirm_password',	Url::get('confirm_password'));
		
		if(isset($_POST['confirm_register_checked']) && $_POST['confirm_register_checked']==1){
			$display->add('confirm_register_checked',	'checked="checked"');
		}
		else{
			$display->add('confirm_register_checked',	'');
		}

		$display->output('Register');	
		$this->endForm();		
	}
}
?>
